/**
 * 发送get异步请求
 * @param {string} url 请求地址
 * @param {object} params 请求参数  { 参数名:数据,...,参数名:数据}
 * @param {function} Promise 
 * @param {string|undefined} type 数据类型
 * @param {object} headers 自定义请求头
 * @return undefined
 */
function get(url, params, type = 'json', header = {}) {
    return new Promise((resolve, reject) => {
        const xhr = new XMLHttpRequest;
        console.log(xhr)
        xhr.onreadystatechange = () => {
            if (xhr.readyState === 4) {
                if (xhr.status === 200) {
                    let res = xhr.responseText;
                    if (type === 'json') res = JSON.parse(xhr.responseText);
                    // switch (type) {
                    //     case 'json':
                    //         res = JSON.parse(res);
                    //         break;

                    //     default:
                    //         break;
                    // }
                    resolve(res)
                }else {
                    console.log('瑕疵', xhr.status)
                    reject(xhr.status)
                }
            } 
        }
        let temp = [];
        //遍历并push到数组，以键=值的形式
        for (let key in params) {
            temp.push(`${key}=${params[key]}`)
        }
        //数组变字符串 &    temp.join('&')
        xhr.open('get', `${url}?${temp.join('&')}`)
        //遍历并push到数组，以键,值的形式
        for (const key in header) {
            xhr.setRequestHeader(key, header[key])
        }
        xhr.send(null)
    })

}




/**
 * 发送post异步请求
 * @param {string} url 请求地址
 * @param {object} params 请求参数  { 参数名:数据,...,参数名:数据}
 * @param {function}  Promise
 * @param {string|undefined} type 数据类型
 * @param {object} headers 自定义请求头
 * @return undefined
 */
 function get(url, params, type = 'json', header = {}) {
    return new Promise((resolve, reject) => {
        const xhr = new XMLHttpRequest;
        console.log(xhr)
        xhr.onreadystatechange = () => {
            if (xhr.readyState === 4) {
                if (xhr.status === 200) {
                    let res = xhr.responseText;
                    if (type === 'json') res = JSON.parse(xhr.responseText);
                    // switch (type) {
                    //     case 'json':
                    //         res = JSON.parse(res);
                    //         break;

                    //     default:
                    //         break;
                    // }
                    resolve(res)
                }else {
                    console.log('瑕疵', xhr.status)
                    reject(xhr.status)
                }
            } 
        }
        let temp = [];
        //遍历并push到数组，以键=值的形式
        for (let key in params) {
            temp.push(`${key}=${params[key]}`)
        }
        //数组变字符串 &    temp.join('&')
        xhr.open('post', url)
        xhr.getResponseHeader('application','x-www-form-urlencoded')
        //遍历并push到数组，以键,值的形式
        for (const key in header) {
            xhr.setRequestHeader(key, header[key])
        }
        xhr.send(temp.join('&'))
    })

}